package com.factory.code.common.helper;

import org.apache.commons.lang3.StringUtils;

import java.io.File;

public class StringHelper {
    public static String removePrefix(String value, String... prefix) {
        if (StringUtils.isEmpty(value)) {
            return "";
        }
        if (null != prefix) {
            for (int i = 0; i < prefix.length; ++i) {
                String pf = prefix[i];
                if (value.toLowerCase().matches("^" + pf.toLowerCase() + ".*")) {
                    //截取前缀后面的字符串
                    return value.substring(pf.length());
                }
            }
        }
        return value;
    }



    /**
     * 移除  "_"并首字母大写
     *
     * @param value
     * @return
     */
    public static String removeUnderline(String value) {
        if (value.contains("_")) {
            String[] keyArray = value.split("_");
            StringBuilder sb = new StringBuilder();
            for (String key : keyArray) {
                //下划线后的首字母大写
                sb.append(StringUtils.capitalize(key));
            }
            value = sb.toString();
        }
        return StringUtils.capitalize(value);
    }

    public static String lowerFirstCase(String str) {
        if (StringUtils.isEmpty(str)) {
            return str;
        }

        char[] chars = str.toCharArray();
        //首字母小写方法，大写会变成小写，如果小写首字母会消失
        if (chars[0] >= 'a' && chars[0] <= 'z') {
            return String.valueOf(chars);
        }

        chars[0] += 32;
        return String.valueOf(chars);
    }

    public static String upperFirstCase(String str) {
        if (StringUtils.isEmpty(str)) {
            return str;
        }

        char[] chars = str.toCharArray();
        //首字母小写方法，大写会变成小写，如果小写首字母会消失
        if (chars[0] >= 'A' && chars[0] <= 'Z') {
            return String.valueOf(chars);
        }

        chars[0] -= 32;
        return String.valueOf(chars);
    }

    /**
     * 首字母大写。 name -> Name
     */
    public static String upperFirstLetter(String str) {
        if (org.springframework.util.StringUtils.hasText(str)) {
            String firstUpper = str.substring(0, 1).toUpperCase();
            str = firstUpper + str.substring(1);
        }
        return str;
    }

    /**
     * 首字母小写。Name -> name
     */
    public static String lowerFirstLetter(String str) {
        if (org.springframework.util.StringUtils.hasText(str)) {
            String firstLower = str.substring(0, 1).toLowerCase();
            str = firstLower + str.substring(1);
        }
        return str;
    }
}
